package Top101K;

import java.util.HashMap;
import java.util.HashSet;

/**
 * @Author quan
 * @Description 云智测试一面：没写出来
 * @Date 2023/10/19 20:28
 */
public class a04_onlyOneChar {
    public static void main(String[] args) {
        String str1 = "abecd";
        String str2 = "abcd";
        /**
         * 方法1：暴力求解
         * 1-设置标志位来寻找内层循环中有没有这个字符
         */
//        for (int i = 0; i < str1.length(); i++) {
//            boolean flag = false; //表示Str2中有没有找到这个字符，默认是没有
//            for (int j = 0; j < str2.length(); j++) {
//                if(str1.charAt(i) == str2.charAt(j)){
//                    //如果找到了，就置为true
//                    flag = true;
//                    break;
//                }
//            }
//            //如果是false，就表示没有找到
//            if(flag == false){
//                System.out.println(str1.charAt(i));
//            }
//        }
        /**
         * 方法2：判断字符在不在第一个字符串里面
         * 1-判断字符串在不在字符串里面：str2.contains("a")
         * 2-字符转为字符串：
         */
//        for (int i = 0; i < str2.length(); i++) {
//            if(!str2.contains(Character.toString(str1.charAt(i)))){
//                System.out.println(str1.charAt(i));
//            }
//        }
        /**
         * 方法3：map记录元素以及个数
         * 1-取出 map中的key对应的value次数是多少；
         * 2-如果不是0，就在原有次数的基础上加一；否则说明是第一次出现，返回该字符
         */
//        HashMap<Character,Integer> map = new HashMap<>();
//        for (int i = 0;i<str1.length();i++){
//            map.put(str1.charAt(i),1);
//        }
//        for (int i = 0; i < str2.length(); i++) {
//            //
//            int count = map.get(str2.charAt(i));
//            if(count==0){
//                //说明是第一次出现
//                System.out.println(str2.charAt(i));
//            }else{
//                System.out.println(str2.charAt(i)+"111");
//            }
//        }

        /**
         * 方法4：用set
         * 1-先遍历第一个字符串的字符全部存储到map或者set中
         * 2-再判断第二个字符串中的字符在不在map中，不在的话就说明是特殊字符
         * set.contains(字符)
         */
        HashSet<Character> set = new HashSet<>();
        for (int i = 0; i < str2.length(); i++) {
            set.add(str2.charAt(i));
        }
        for (int i = 0; i < str1.length(); i++) {
            if(!set.contains(str1.charAt(i))){
                System.out.println(str1.charAt(i));
            }
        }
    }
}
